package com.wuyoucar.util;

import com.baidu.aip.ocr.AipOcr;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class CardTextUtil {
    // 设置APPID/AK/SK
    public static final String APP_ID = "22724773";// 你的 App ID
    public static final String API_KEY = "27QfNUPDSCcM0HIT8XfwIEtb";// 你的 Api Key
    public static final String SECRET_KEY = "opWF3ks0MkDuH0Y7DzL1Pa1Dz1I7GmHQ";// 你的Secret

    /**
     * 百度身份证文字识别
     *
     * @param imgPath //上传后的图片路径(图片名称)
     * @return
     */
    public static Map<String,Object> recognition(String imgPath) {
        // 初始化一个AipOcr
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);// 建立连接的超时时间（单位：毫秒）
        client.setSocketTimeoutInMillis(60000);// 通过打开的连接传输数据的超时时间（单位：毫秒）
        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("detect_direction", "true");// 是否检测图像朝向，默认不检测，即：false。
        // 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能，默认不开启，即：false。
        options.put("detect_risk", "false");
        // 参数为本地图片二进制数组
        // front - 身份证含照片的一面(back - 身份证带国徽的一面)
//        String imagePath = "C:\\Users\\zhx\\Desktop\\ZJZM430223199812188333.jpg";
        JSONObject res = client.idcard(imgPath, "front", options);
        JSONObject object = res.getJSONObject("words_result");
        String[] key = {"姓名","民族","住址","公民身份号码","出生","性别"};
        Map<String,Object> map = new HashMap<>();
        for (int i = 0; i < 6; i++) {
            map.put(key[i],object.getJSONObject(key[i]).get("words"));
            System.out.println("key="+key[i]+",value="+object.getJSONObject(key[i]).get("words"));
        }
        return map;
    }
}
